﻿/*
** Xin YUAN, 2021, BSD (2)
*/

////////////////////////////////////////////////////////////////////////////////
#ifndef __CTL_PROCESS_H__
#define __CTL_PROCESS_H__
////////////////////////////////////////////////////////////////////////////////

#ifndef __CTL_DEF_H__
	#error process.h requires def.h to be included first.
#endif

#include "_system_/sys_process.h"

////////////////////////////////////////////////////////////////////////////////
namespace CTL {
////////////////////////////////////////////////////////////////////////////////

//SubProcess

typedef sub_process  SubProcess;

//RedirectIoProcess

typedef rio_process  RedirectIoProcess;

// ProcessHelper

class ProcessHelper
{
public:
	// Execute a command
	static bool ExecuteCommand(const char_s* szCmd, int32_t& iRet) noexcept
	{
		SubProcess process;
		if ( !process.Create(szCmd) )
			return false;
		process.WaitForEnd();
		iRet = process.GetExitCode();
		return true;
	}
};

////////////////////////////////////////////////////////////////////////////////
}
////////////////////////////////////////////////////////////////////////////////
#endif
////////////////////////////////////////////////////////////////////////////////
